mac m1晶片踩坑記


Posted by Limon on 2021-07-30

離職前一個禮拜公司買了新的mac mini,新的React native專案要開始了,主管要我幫忙設定環境,想說應該很快就弄完了,結果弄了兩天XD,簡單記錄一下過程。

一開始裝pod install一直卡卡卡,查半天一直以為是Xcode沒有設定arm64,仔細檢查後發現以前的開發團隊早就設定好了,尤其是Excluded Architectures=>Any ios Simulator SDK,怎麼查都是在講設定的文章,結果問題根本這些沒關係。

後來查到這篇文章pod安装踩坑记录,原來是因為m1晶片不支援x86底下開發的package,尤其新的專案又是react native,要等到套件作者更新可能要一段時間,按照文章說的把會用到的應用程式改成使用Rosetta打開。


建議這三個應用程式一定要打開,問題才會比較少。

  1. 終端機 (在工具程式資料夾)
  2. Xcode
  3. Simulator(預設路徑:/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app)

如果pod install還是裝不起來,可以試試用x86_64的pod install:

先安裝

sudo arch -x86_64 gem install ffi

再打指令

arch -x86_64 pod install

'Google-Maps-iOS-Utils/GMUKMLParser.h' file not

react-native-maps重新安裝完在Xcode build後,一定會出現這個bug

#import <Google_Maps_iOS_Utils/GMUKMLParser.h>

解決方法就是像上面的程式碼的'-改成_,再build一次就可以了。

以為解脫了,然後又出現了新的bug(昏倒) (´・_・`)

error message: duplicate symbols for architecture x86_64

簡單來說就是錯誤訊息裡提到的package引用了兩次,後來去react-native-maps github查看安裝流程文件,原本裝這個package時需要在Xcode目錄區參考AirgoogleMaps、AirMaps資料夾,於是我把這兩個從Xcode Delete references之後就沒有這個bug了。

猜測原因應該是React Native 60之後的版本都有 auto-link,因此不再需要手動增加參考路徑。

build system

Xcode之後會拋棄舊式的compiler,更改設定在Xcode=>File=>Workspace Settings=>Build System 設定為『New Build System』

這些都設定完之後,在模擬器成功開啟ios app了(灑花)٩(^ᴗ^)۶

Firebase/Core (~>7.6.0)

結果隔天母公司有人更新了package.json,把react-native-Firebase更新到了最新版,拉新code之後,pod install又裝不起來了,嗚嗚嗚 〒.〒

錯誤訊息大概就是新套件要用到Firebase/Core 7.6.0,但是本地端cocoapods找不到,輸入pod update repo也不起作用,本來想說去 ~/.cocoapods/repos更新要用的套件就好了,結果打了指令還是不能更新...,最後是把cocoapods整個移除重新安裝一次,然後在podfile新增 pod 'Firebase/Core','7.6.0',再一次pod install終於載到新版本的Firebase/Core,但是把這行從podfile移除掉又變不行裝...,明明本地端已經確定裝到最新版,照理說應該不用加這行也可以運行,反正目前可以build開始開發就好了XD。


#React Native #mac m1







Related Posts

1211. Queries Quality and Percentage

1211. Queries Quality and Percentage

Command Line Interface (CLI) 超入門

Command Line Interface (CLI) 超入門

給工程師的 Sketch Prototyping 簡易入門教學

給工程師的 Sketch Prototyping 簡易入門教學


Comments